home *** CD-ROM | disk | FTP | other *** search
/ Adobe Graphics & Publishing SDK 1996 December / Adobe Graphics & Publishing SDK 1996 December.iso / mac / Premiere 4.2 SDK r3 Mac / Examples / .h files / PremiereInterface.h < prev    next >
Text File  |  1996-01-25  |  22KB  |  556 lines

  1. //========================================================================================
  2. //
  3. // PremiereInterface.h - Adobe Premiere¬ include file.
  4. //
  5. // Part of the Adobe Premiere¬ 4.2 Plug-In Developer's Toolkit.
  6. //
  7. // Header file written 10/20/93 by Bryan K. ╥Beaker╙ Ressler.
  8. //
  9. // Copyright ⌐ 1992-96, Adobe Systems Incorporated, all rights reserved worldwide.
  10. //
  11. // Version    1.00    10/20/93    Original version.
  12. // Version    1.01    9/12/94        Updated for 4.0.
  13. // Version  1.02    11/6/95     Updated for Premiere 4.2 and CodeWarrior7 - See 4.2
  14. //                                comments below.
  15. //
  16. //========================================================================================
  17.  
  18. // NOTE: When this file is included by a CodeWarrior project which compiles to 68K code,
  19. // you must turn on MPW C Calling Conventions in the 68K preferences section.
  20.  
  21. // START~ SUBS-Blocks
  22.  
  23. //╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤
  24. // These are the track ID's
  25. enum {
  26.     tVideoA = 0,
  27.     tVideoB,
  28.     tVideoSuper,
  29.     tFX1,
  30.     tAudioA,
  31.     tAudioB,
  32.     tAudioC
  33. };
  34.  
  35. // These are the currently defined block types
  36. enum {
  37. //            Type            ID        Parent        Data                                Description
  38. //            ----------        ------     ----------    ----------------------------------    --------------------------------
  39.     bBLOK =    'BLOK',        //    0        none        (L)wrk strt, (L)wrk end, sub-blks    Container for everything
  40.  
  41.     bTRKB =    'TRKB',        //    0        BLOK        track blocks                        Container for all of the tracks
  42.     bTRAK =    'TRAK',        //    ID        TRKB        (S)flags, TREC blocks                Contains all of the blocks for an entire track
  43.     bFVID =    'FVID',        //    0        TRAK        none                                indicates that a track contains video records
  44.     bFSUP =    'FSUP',        //    0        TRAK        none                                indicates that a track contains superimpose records
  45.     bFAUD =    'FAUD',        //    0        TRAK        none                                indicates that a track contains audio records
  46.     bAMAP = 'AMAP',        //    0        FAUD        (S)mapping bits                        bits indicate target tracks
  47.     bFF_X =    'FF_X',        //    0        TRAK        none                                indicates that a track contains F/X records
  48.     bTREC =    'TREC',        //    n        TRAK        (S)clipID,(L)strt,(L)end,sub-blocks    Contains the blocks for a single track item
  49.     bRBND =    'RBND',        //    0        TREC        (S)max, RPNT blocks                    [optional] The rubber band info for a track item
  50.     bRPNT =    'RPNT',        //    0-n        RBND        (L)h, (S)v                            rubber band point
  51.     bFXOP =    'FXOP',        //    0        TREC        (C)crnr,(C)dir,(S)strt,(S)end,blks    [optional] The options controlling F/X options
  52.     bFXDF =    'FXDF',        //    0        FXOP        OSType                                the base type of the effect
  53.     bEDGE =    'EDGE',        //    0        FXOP        (S)thickness, COLR block            [optional] describes edge thickness
  54.     bMPNT =    'MPNT',        //    0        FXOP        Point                                [optional] reference point for next to types
  55.     bSPNT =    'SPNT',        //    0        FXOP        Point                                [optional] user specified open point
  56.     bEPNT =    'EPNT',        //    0        FXOP        Point                                [optional] user specified close point
  57.     bOVER =    'OVER',        //    0        TREC        (S)type, info blocks                [optional] The parameters for an overlay item
  58.     bCOLR =    'COLR',        //    0        OVER,FILE    RGBColor                            [optional] key or fill color
  59.     bSIMI =    'SIMI',        //    0        OVER        (S)similarity                        [optional] similarity value
  60.     bBLND =    'BLND',        //    0        OVER        (S)blend                            [optional] blend value
  61.     bTHRS =    'THRS',        //    0        OVER        (S)threshold                        [optional] threshold value
  62.     bCUTO =    'CUTO',        //    0        OVER        (S)cutoff                            [optional] cutoff value
  63.     bALIA =    'ALIA',        //    0        OVER        (S)level                            [optional] anti-aliasing level
  64.     bSHAD =    'SHAD',        //    0        OVER        none                                [optional] if present, shadowing is on
  65.     bRVRS =    'RVRS',        //    0        OVER        none                                [optional] if present, key is reversed
  66.     bGARB =    'GARB',        //    0        OVER        (R)ref rect,point blocks            garbage matte points
  67.     bPONT =    'PONT',        //    0-n        GARB,RBND    Point
  68.     bMATI =    'MATI',        //    0        OVER        (S)clipID                            [optional] The ID of the clip describing an overlay Matte
  69.     bVFLT =    'VFLT',        //    0        TREC        sub-blocks                            [optional] followed by individual filter blocks
  70.     bAFLT =    'AFLT',        //    0        TREC        sub-blocks                            [optional] followed by individual filter blocks
  71.     bFILT =    'FILT',        //    0-n        VFLT,AFLT    (S)fileID,data block                The (short) fileID, followed by a variable amount of data
  72.     bMOTN =    'MOTN',        //    0        TREC        (R)ref rect,sub blocks                [optional] A record describing the motion path for a track item
  73.     bSMTH =    'SMTH',        //    0        MOTN        none                                If present, motion path is smoothed
  74.     bMREC =    'MREC',        //    0-n        MOTN        (S)zoom,(P)spot,(P)dest[4]            describes each motion point
  75.     bDATA =    'DATA',        //    0        any            data block                            [optional]generic data block, for storing parameter handles
  76.  
  77.     bCLPB =    'CLPB',        //    0        BLOK        clip blocks                            Contains all of the clip blocks
  78.     bCLIP =    'CLIP',        //    ID        CLPB        (S)fileID,(L)in,(L)out                the descriptive info for a clip
  79.     bMARK =    'MARK',        //    0-9        CLIP        (L)location                            [optional] For set markers, defines the markers
  80.     bLOCK =    'LOCK',        //    0        CLIP        none                                [optional] If present, clip has locked aspect
  81.     bRATE =    'RATE',        //    0        CLIP        (S)rate * 100                        [optional] Defines a rate other than 1.00
  82.  
  83.     bFILB =    'FILB',        //    0        BLOK        file blocks                            Contains all of the file blocks
  84.     bFILE =    'FILE',        //    ID        FILB        info blocks                            the descriptive blocks for a file
  85.     bMACS =    'MACS',        //    0        FILE        FSSpec                                the mac file spec
  86.     bMACP =    'MACP',        //    0        FILE        string                                the full mac pathname
  87.     bFRMS =    'FRMS',        //    0        FILE        (L)#frames                            [optional] number of frames for a file w/content
  88.     bVIDI =    'VIDI',        //    0        FILE        (L)video frame,(S)depth                [optional] Describes the video portion of the file
  89.     bAUDI =    'AUDI',        //    0        FILE        (S)aud flags,(L)aud rate            [optional] Describes the audio portion of the file
  90.     bTIMC =    'TIMC',        //    0        FILE        timecode                            [optional] Specifies the timecode for the first file frame
  91.     bTIMB = 'TIMB',        //    0        FILE        (L)frame,(C)dropframe,(C)format        [optional] Specifies the binary timecode, as above
  92.     bREEL =    'REEL'        //    0        FILE        (STR)reel name                        [optional] String describing the source reel for the file
  93. };
  94.  
  95. // These are the structures for the static data for several of the blocks
  96.  
  97. typedef struct {
  98.     long            start;                // starting position for the work area
  99.     long            end;                // ending position for the work area
  100. } Rec_BLOK;
  101.  
  102. typedef struct {
  103.     short            fileID;                // the dependent file ID
  104.     long            in;                    // the IN point within the source material
  105.     long            out;                // the OUT point within the source material minus 1
  106. } Rec_CLIP;
  107.  
  108. typedef struct {
  109.     short            clipID;                // the dependent clip ID
  110.     long            start;                // the clip starting position
  111.     long            end;                // the clip ending position
  112. } Rec_TREC;
  113.  
  114. typedef struct {
  115.     short            zoom;                // zoom factor 1 to 400, 100 is normal
  116.     short            time;                // time location 1 to 1000
  117.     short            rotation;            // rotation factor -360 to 360, 0 is normal
  118.     short            delay;                // delay factor 0 to 100, 0 is normal
  119.     Point            spot;                // the center point for the image at this point
  120. } Rec_MREC;
  121.  
  122. typedef struct {
  123.     unsigned char    corners;            // the 'corner' flags, one bit each, from the user settings for the effect
  124.     char            direction;            // the direction flag, 0= A-->B, 1=B-->A
  125.     short            startPercent;        // starting percentage times 100
  126.     short            endPercent;            // ending percentage times 100
  127. } Rec_FXOP;
  128.  
  129. typedef struct {
  130.     long            h;
  131.     short            v;
  132. } Rec_RPNT;
  133.  
  134. typedef struct {
  135.     Rect            frame;                // bounding frame for video data
  136.     short            depth;                // bit depth for video data
  137. } Rec_VIDI;
  138.  
  139. typedef struct {
  140.     long    frames;            // binary frame count
  141.     char    dropframe;        // true = DF, false = NDF
  142.     char     format;            // true = NTSC(30), false = PAL(25), 2=Film(24)
  143. } Rec_TIMB;
  144.  
  145. // These are the basic effect types, each effect falls back to one of these
  146. enum {
  147.     fDISS =    'DISS',            // cross dissolve
  148.     fTAKE =    'TAKE',            // 'take' or cut
  149.     fWI00 = 'WI00',            // vertical wipe from the left edge
  150.     fWI01 = 'WI01',            // horizontal wipe from the top edge
  151.     fWI02 = 'WI02',            // vertical wipe from the right edge
  152.     fWI03 = 'WI03',            // horizontal wipe from the bottom edge
  153.     fWI04 = 'WI04',            // diagonal wipe from upper left corner
  154.     fWI05 = 'WI05',            // diagonal wipe from upper right corner
  155.     fWI06 = 'WI06',            // diagonal wipe from lower right corner
  156.     fWI07 = 'WI07',            // diagonal wipe from lower left corner
  157.     fWI08 = 'WI08',            // vertical split wipe
  158.     fWI09 = 'WI09',            // horizontal split wipe
  159.     fWI10 = 'WI10',            // horizontal/vertical split wipe
  160.     fWI11 = 'WI11',            // box wipe out from the center
  161.     fWI12 =    'WI12',            // circular wipe from the center
  162.     fWI13 = 'WI13',            // inset wipe from upper left
  163.     fWI14 = 'WI14',            // inset wipe from upper right
  164.     fWI15 = 'WI15',            // inset wipe from lower right
  165.     fWI16 = 'WI16'            // inset wipe from lower left
  166. };
  167.  
  168. // START~ Int-Devices
  169.  
  170. // These are the definitions for device control plug-ins
  171.  
  172. typedef pascal char (*CallBackPtr)(void);
  173.  
  174. // The main info record
  175.  
  176. #ifdef PrPPC
  177. enum {
  178.     uppPauseProcInfo = kPascalStackBased,
  179.     uppResumeProcInfo = kPascalStackBased,
  180.     uppCallBackPtrInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(char)))
  181. };
  182. #endif
  183.  
  184. typedef struct {
  185.     Handle                    deviceData;                // private data which the plug-in creates
  186.     short                    command;                // command to perform
  187.     short                    mode;                    // mode command and status
  188.     long                    timecode;                // timecode command and status: -1 = N/A, -2 = blank
  189.     short                    timeformat;                // 0=non-drop, 1=drop-frame
  190.     short                    timerate;                // fps for the timecode above
  191.     long                    features;                // feature bits from the features command
  192.     short                    error;                    // error code from any routine
  193.     short                    preroll;                // pre-roll time (secs) for cmdLocate
  194.     CallBackPtr                callback;                // callback for cmdLocate, returns non-zero to stop
  195.     ProcPtr                    PauseProc;                // callback to pause current operations
  196.     ProcPtr                    ResumeProc;                // callback to restart current operations
  197. } DeviceRec, **DeviceHand;
  198.  
  199. // Codes sent to plug-in interface
  200.  
  201. enum {
  202.     dsInit = 0,                    // Create any structure(s), pick an operating mode, no dialogs here
  203.     dsSetup,                    // prompt for any user dialogs
  204.     dsExecute,                    // perform command
  205.     dsCleanup,                    // dispose any allocated structure(s)
  206.     dsRestart,                    // re-start any features, used at program startup to reconnect device
  207.     dsQuiet                        // 4.2 - disconnect from device but DON'T dispose allocated structures
  208. };
  209.  
  210. // Commands which plug-in can perform
  211.  
  212. enum {
  213.     cmdGetFeatures = 0,            // return feature bits
  214.     cmdStatus,                    // fill in current mode and timecode, gets called repeatedly
  215.     cmdNewMode,                    // change to the mode in 'mode'
  216.     cmdGoto,                    // goto the timecode specified in 'timecode'
  217.     cmdLocate,                    // find the timecode in 'timecode' and then return (with deck in play)
  218.     cmdShuttle,                    // shuttle at rate specified in 'mode', from -100 to +100
  219.     cmdJogTo,                    // position at 'timecode', quickly from the current location
  220.     cmdJog,                        // 4.2 - Jog at rate specified in 'mode', from -25 to +25
  221.     cmdEject                    // 4.2 - eject media
  222. };
  223.  
  224. // Feature bits
  225.  
  226. enum {
  227.     fDrvrQuiet        = 0x00040000,    // driver supports a quiet mode --- NEW in 4.2
  228.     fHasJogMode        = 0x00020000,    // device has jog capabilities --- NEW in 4.2
  229.     fCanEject        = 0x00010000,    // can Eject media --- NEW in 4.2
  230.     fStepFwd        = 0x00008000,    // can step forward
  231.     fStepBack        = 0x00004000,    // can step back
  232.     fRecord            = 0x00002000,    // can record
  233.     fPositionInfo    = 0x00001000,    // returns position info
  234.     fGoto            = 0x00000800,    // can seek to a specific frame (fPositionInfo must also be set)
  235.     f1_5            = 0x00000400,    // can play at 1/5 speed
  236.     f1_10            = 0x00000200,    // can play at 1/10 speed
  237.     fBasic            = 0x00000100,    // supports Stop,Play,Pause,FastFwd,Rewind
  238.     fHasOptions        = 0x00000080,    // plug-in puts up an options dialog
  239.     fReversePlay    = 0x00000040,    // supports reverse play
  240.     fCanLocate        = 0x00000020,    // can locate a specific timecode
  241.     fStillFrame        = 0x00000010,    // device is frame addressable, like a laser disc
  242.     fCanShuttle        = 0x00000008,    // supports the Shuttle command
  243.     fCanJog            = 0x00000004    // supports the JogTo command
  244. };
  245.  
  246. // Mode commands/states
  247.  
  248. enum {
  249.     modeStop = 0,
  250.     modePlay,
  251.     modePlay1_5,
  252.     modePlay1_10,
  253.     modePause,
  254.     modeFastFwd,
  255.     modeRewind,
  256.     modeRecord,
  257.     modeGoto,
  258.     modeStepFwd,
  259.     modeStepBack,
  260.     modePlayRev,
  261.     modePlayRev1_5,
  262.     modePlayRev1_10
  263. };
  264.  
  265. // START~ Int-Effects
  266.  
  267. //╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤
  268. // Effect callback prototypes
  269.  
  270. typedef pascal short (*FXCallBackProcPtr) (long frame, short track, CGrafPtr thePort, 
  271.                                            Rect *theBox, Handle privateData);
  272.  
  273. #ifdef PrPPC
  274. enum {
  275.     uppFXCallBackProcPtrInfo = kPascalStackBased
  276.          | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  277.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  278.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  279.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(CGrafPtr)))
  280.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Rect *)))
  281.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(Handle)))
  282. };
  283. #endif
  284.  
  285. //╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤
  286. // Effect Data Structure
  287.  
  288. typedef struct {
  289.     Handle                    specsHandle;        // specification handle
  290.     GWorldPtr                source1;            // source GWorld #1
  291.     GWorldPtr                source2;            // source GWorld #2
  292.     GWorldPtr                destination;        // Destination GWorld
  293.     long                    part;                // part / total = % complete
  294.     long                    total;
  295.     char                    previewing;            // obsolete
  296.     unsigned char            arrowFlags;            // flags for direction arrows
  297.     char                    reverse;            // is effect being reversed?
  298.     char                    source;                // are sources swapped?
  299.     Point                    start;                // starting point for effect
  300.     Point                    end;                // ending point for effect
  301.     Point                    center;                // the reference center point
  302.     Handle                    privateData;        // Editor private data handle
  303.     FXCallBackProcPtr        callBack;            // callback, not valid if nil
  304.     BottleRec                *bottleNecks;        // botleneck callback routines
  305.     short                    version;
  306.     short                    sizeFlags;
  307.     long                    flags;
  308.     short                    fps;
  309. } EffectRecord, **EffectHandle;
  310.  
  311. typedef struct {
  312.     EffectRecord            common;                // common fields;
  313.     
  314.     Media                    sourceMedia1;        // Media which contains source sample 1
  315.     long                    sourceTime1;        // time value for source sample 1, in media time scale
  316.     
  317.     Media                    sourceMedia2;        // Media which contains source sample 2
  318.     long                    sourceTime2;        // time value for source sample 2, in media time scale
  319.     
  320.     Handle                    sourceDesc1;        // ImageDescriptionHandle for source data 1
  321.     Handle                    sourceDesc2;        // ImageDescriptionHandle for source data 2
  322.     Handle                    destDesc;            // ImageDescriptionHandle for destination data
  323.     
  324.     Handle                    sourceData1;        // source data 1
  325.     Handle                    sourceData2;        // source data 2
  326.     Handle                    destData;            // returned processed data
  327. } DirectEffectRecord, **DirectHandle;
  328.  
  329. // Selector messages
  330. enum {
  331.     esExecute = 0,
  332.     esSetup,
  333.     esAbout,
  334.     esCanHandleComp,
  335.     esProcessComp
  336. };
  337.  
  338. enum {
  339.     dfCantHandle = 0,                            // returned if not valid content for fx
  340.     dfCanHandle,                                // can perform, wants data supplied
  341.     dfCanHandleNoData                            // can perform, will get data directly
  342. };
  343.  
  344. // Effect Corner Bits
  345. enum {
  346.     bitTop =                0x01,
  347.     bitRight =                0x02,
  348.     bitBottom =                0x04,
  349.     bitLeft =                0x08,
  350.     bitUpperRight =            0x10,
  351.     bitLowerRight =            0x20,
  352.     bitLowerLeft =            0x40,
  353.     bitUpperLeft =            0x80
  354. };
  355.  
  356. typedef pascal short (*EffectProcPtr) (short selector, EffectHandle theData);
  357.  
  358. // START~ Int-Export
  359.  
  360. //╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤
  361. // EDL Export Data Structure
  362.  
  363. typedef struct {
  364.     Handle                    dataHandle;            // data handle
  365.     short                    timeBase;            // current default timebase
  366.     StringPtr                projectName;        // pointer to current project name
  367. } ExportRecord, **ExportHandle;
  368.  
  369. typedef pascal short (*ExportProcPtr) (short selector, ExportHandle theData);
  370.  
  371. // Selector messages
  372. enum {
  373.     exExecute = 0,
  374.     exTrue30fps
  375. };
  376.  
  377. //╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤
  378. // Data Export Data Structure
  379.  
  380. enum {
  381.     aflag5KHz =            0x0001,
  382.     aflag11KHz =        0x0002,
  383.     aflag22KHz =        0x0004,
  384.     aflag44KHz =        0x0008,
  385.     aflagSpecial =        0x0040,
  386.     aflagStereo =        0x0100,
  387.     aflag16Bit =        0x0200,
  388.     aflagDropFrame =    0x0400
  389. };
  390.  
  391. // Callback to get one frame of video
  392. typedef pascal short (*GetVidCallBack) (long frame, GWorldPtr thePort, Rect *theBox, Handle privateData);
  393.  
  394. // Callback to get one second of audio
  395. typedef pascal short (*GetAudCallBack) (long second, short formatFlags, Ptr buffer, Handle privateData);
  396.  
  397. #ifdef PrPPC
  398. enum {
  399.     uppGetVidCallBackProcPtrInfo = kPascalStackBased
  400.          | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  401.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  402.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(GWorldPtr)))
  403.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect *)))
  404.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Handle))),
  405.     uppGetAudCallBackProcPtrInfo = kPascalStackBased
  406.          | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  407.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  408.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  409.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Ptr)))
  410.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Handle)))
  411. };
  412. #endif
  413.  
  414. typedef struct {
  415.     long                    markers[12];        // clip markers
  416.     long                    numframes;            // number of frames in the clip
  417.     short                    framerate;            // frames per second of source material
  418.     Rect                    bounds;                // the video bounding frame, empty if no video
  419.     short                    audflags;            // the audio flags (above), zero if no audio
  420.     long                    audrate;            // the audio rate in Hz
  421.     GetVidCallBack            getVideo;            // video reader callback
  422.     GetAudCallBack            getAudio;            // audio reader callback
  423.     Handle                    privateData;        // private data passed to above routines
  424.     long                    specialRate;        // special rate
  425. } DataExportRec, **DataExportHandle;
  426.  
  427. enum {
  428.     edExecute = 0
  429. };
  430.  
  431. typedef pascal short (*DataExportProcPtr) (short selector, DataExportHandle theData);
  432.  
  433. // START~ Int-Filters
  434.  
  435. //╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤
  436. // Filter callback prototype
  437.  
  438. typedef pascal short (*VFilterCallBackProcPtr) (long frame, CGrafPtr thePort, Rect *theBox, Handle privateData);
  439. typedef pascal short (*AFilterCallBackProcPtr) (long sample, long count, Ptr buffer, Handle privateData);
  440.  
  441. #ifdef PrPPC
  442. enum {
  443.     uppVFilterCallBackProcPtrInfo = kPascalStackBased
  444.          | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  445.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  446.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(CGrafPtr)))
  447.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect *)))
  448.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Handle))),
  449.     uppAFilterCallBackProcPtrInfo = kPascalStackBased
  450.          | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  451.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  452.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  453.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Ptr)))
  454.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Handle)))
  455. };
  456. #endif
  457.  
  458. //╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤╤
  459. // Filter Data Structure
  460.  
  461. typedef struct {
  462.     Handle                    specsHandle;        // settings for this filter
  463.     GWorldPtr                source;                // source pixels
  464.     GWorldPtr                destination;        // dest pixels
  465.     long                    part;                // how far have we come
  466.     long                    total;                // how much will we do
  467.     char                    previewing;            // obsolete
  468.     Handle                    privateData;        // private to callback
  469.     VFilterCallBackProcPtr    callBack;            // callback for other frame data
  470.     BottleRec                *bottleNecks;        // utility routines
  471.     short                    version;            // version of struct (now 2 in ver>4.2)
  472.     short                    sizeFlags;            // flags for field/other processing
  473.     long                    flags;                // more flags
  474.     short                    fps;                // fps of source project timebase
  475.     // 4.2 changes -- njs
  476.     Handle                    InstanceData;        // private data for filter - set to non-nil 
  477.                                                 // and Premiere will preserve at compile time.
  478. } VideoRecord, **VideoHandle;
  479.  
  480. typedef struct {
  481.     Handle                    specsHandle;        // settings for this filter
  482.     Ptr                        source;                // source sample buffer
  483.     Ptr                        destination;        // destination sample buffer
  484.     long                    samplenum;            // sample number we're at
  485.     long                    samplecount;        // how many to do
  486.     char                    previewing;            // obsolete
  487.     Handle                    privateData;        // used by callback
  488.     AFilterCallBackProcPtr    callBack;            // call back for other samples in file
  489.     long                    totalsamples;        // total samples in file
  490.     short                    flags;                // 16bit/stereo flags
  491.     long                    rate;                // sample rate
  492.     BottleRec                *bottleNecks;        // handle to bottleneck callbacks
  493.     short                    version;            // version of struct (now 2 in ver>4.2)
  494.     long                    extraFlags;            // more flags
  495.     short                    fps;                // fps of source project timebase
  496.     // 4.2 changes -- njs
  497.     Handle                    InstanceData;        // private data for filter - set to non-nil 
  498.                                                 // and Premiere will preserve at compile time.
  499. } AudioRecord, ** AudioFilter;
  500.  
  501. // Selector messages
  502. enum {
  503.     fsExecute = 0,
  504.     fsSetup,
  505.     fsDisposeData            // 4.2 changes -- njs
  506. };
  507.  
  508. typedef pascal short (*FilterProcPtr) (short selector, Handle theData);
  509.  
  510. // START~ Int-Zoom
  511.  
  512. // Definitions for video board zooming modules
  513.  
  514. typedef struct {
  515.     GDHandle            theDevice;                // GDevice of board to zoom
  516.     short                boardID;                // the boardID of the video card
  517.     Handle                zoomData;                // used by module during zoomIn and Out
  518.     short                mode;                    // screen mode is passed in/out here
  519. } ZoomRec, **ZoomHand;
  520.  
  521. enum {
  522.     cmdCanZoom = 1,                // return 1 if this module can zoom this card
  523.     cmdZoomIn,                    // Set card to x2 zoom mode, remember old settings in zoomData
  524.     cmdZoomOut,                    // Put the card back the way it was, dispose of zoomData
  525.     cmdCanDo,                    // Returns true if this module handles this card
  526.     cmdGetSupportedModes,        // returns bits representing the supported modes
  527.     cmdGetMode,                    // return the current mode
  528.     cmdSetMode,                    // the the card's mode (NTSC, PAL, etc.)
  529.     cmdPlayMovie                // play a movie in some special way
  530. };
  531.  
  532. enum {
  533.     modeNTSC =        0x0001,
  534.     modePAL =        0x0002,
  535.     modeNTSC443 =    0x0004
  536. };
  537.  
  538. // START~ Int-Effects
  539.  
  540. short Effect (short fileID, short selector, EffectHandle theData);
  541. short CallPlugIn (short fileID, short selector, Handle theData);
  542. short DataExport (short fileID, short selector, DataExportHandle theData);
  543. short Filter (short fileID, short selector, Handle theData);
  544.  
  545. // START~ SUBS-Blocks
  546.  
  547. // START~ SUBS
  548. // Used to be BeakerGlue.c stuff
  549. Movie GetExportMovie (DataExportHandle exportData);
  550. void GetExportFSSpec (DataExportHandle exportData, FSSpec *theSpec);
  551. short GetExportClipID (DataExportHandle exportData);
  552. short GetExportDivisor (DataExportHandle exportData);
  553. short GetExportFPS (DataExportHandle exportData);
  554. void GetWipeCodes (long *codes);
  555. void EditWipeCodes (void);
  556.